

// 生成器对象Generation拥有在一个函数块内暂停和恢复代码执行的能力
// 它的形式与函数相似，通过星号（*）标志其为生成器
// 生成器对象通过.next()执行函数块内的事件，碰到yield就会暂停。可以把next当做是“下一步”
function *test(){
    console.log('第一步：打开冰箱')
    yield '冰箱上层是空的，可以放东西！';   

    console.log('第二步：把水果放进去')
    yield '空间足够大，完全放进去咯！';

    console.log('第三步：关上冰箱')
    yield '我完成了！';

    console.log('都搞完了，不用再next了！')
}

let genObj=test()
genObj.next()   //碰到yield停下来了
genObj.next()
genObj.next()
genObj.next()
genObj.next()




// // 判断有没有执行完毕
// // 应用：第二阶段需要第一阶段的参数，第三阶段需要第二阶段的参数...
// // 与async await效果差不多，是生成器的语法糖
// // saga是基于生成器函数的